1. Field of the Invention
The present invention relates to digital communication systems. More particularly, the present invention relates to encoding rate-1/n convolutional codes derived from a standard rate 1/2 convolutional code and decoding the rate-1/n convolutional codes, including their punctured versions.
2. The Background Art
Referring first to FIG. 1, a typical digital communications system 10 having a signal transmission portion 12, a communication channel 14 on a communications medium, and a receiving portion 16 is shown. Digital signal 18 is received and encoded by convolutional encoder 20 and is then sent to modulator 22 through nodes A and B as a convolutional code 24. Modulator 22 modulates convolutional code 24 resulting in modulated signals 26 which are transmitted through communication channel 14, or an equivalent transmission medium. Modulated signals 26 may then be received by receiving portion 16 and demodulated by demodulator 28, resulting in a stream of symbols 30 which are passed through nodes C and D to a convolutional decoder 32. Decoder 32 decodes symbols 30 by estimating an output digital signal 34 from symbols 30.
Symbols 30 are demodulated signals which represent convolutional code 24 and "noise" introduced by transmission medium used. Those of ordinary skill in the art would recognize that the convolutional code and noise content in symbols 30 may be expressed in terms of a signal to noise ration, which may or may not have a gaussian distribution.
Convolutional encoders are known in the art and are used to encode digital signals so as to maximize the signal to noise ratio of the encoded signals when transmitted through a transmission channel or equivalent transmission medium. Convolutional codes include redundant symbols used to increase the signal to noise ratio. This minimizes the probability of errors introduced during encoding.
For example, encoder 20 may be a rate-1/2 convolutional encoder which generates a stream of convolutional code having two output bits for every input bit received by the rate-1/2 encoder. A rate-1/3 convolutional encoder generates a stream of convolutional code having three output bits for every input bit received. Consequently, a rate 1/n convolutional encoder generates convolutional code comprised of n output bits for every one input bit, where the n output bits may be represented as S(0) through S(n-1).
Each of the n output bits generated by a rate-1/n convolutional encoder is a function of a generator polynomial. Thus, a rate-1/n convolutional encoder relies on n different generator polynomials, one polynomial for each output bit generated for a corresponding input bit.
Received convolutional code, such as convolutional code 30, is usually estimated with a convolutional decoder. One type of convolutional decoder known by those of ordinary skill in the art is a Viterbi decoder. For proper operation, the decoder used must have the same rate as the rate used to encode the digital signal and must be tailored for the choice of generator polynomials used to encode the digital signal. For instance, a digital signal encoded by a rate-1/2 convolutional encoder, which uses two different generator polynomials, is decoded with a rate-1/2 decoder tailored to estimate the received symbols, which are comprised of a rate-1/2 convolutional code and noise introduced by a transmission medium, using the same generator polynomials used by the rate-1/2 encoder. Similarly, a rate-1/3 convolutional encoder, which uses three different generator polynomials, is decoded with a rate-1/3 decoder tailored to estimate the received symbols using the same three generator polynomials used by the rate-1/3 decoder. Consequently, a traditional decoder is selected to have the same rate as the rate of the received symbols and is specifically tailored to receive symbols based on the generator polynomials used by the encoder that generated the convolutional code represented by the symbols.
Since standard convolutional coding techniques decrease the rate of the signals that may be transmitted over a given bandwidth, "puncturing" may be used to increase the rate of signals transmitted over a given bandwidth. Puncturing is known in the art and is a process whereby encoded bits, which are redundant, may be systematically removed, increasing the rate of the transmitted bits ("throughput"). When used in conjunction with the encoding technique above, this increase in throughput mitigates the reduction in the original signal rate by the encoding process.
Punctured signals, such as punctured convolutional code, must be "de-punctured" before decoding. For example, referring to FIG. 2A, if a convolutional code is punctured using a puncturing module 36 coupled between encoder 20 and modulator 22 through nodes A and B of FIG. 1, a corresponding "de-puncturing" module 38 (See FIG. 2B) must also be used. De-puncturing module 38 would be inserted between demodulator 28 and decoder 32 between nodes C and D so that the received symbols are de-punctured before they are decoded by decoder 32.
Accordingly, a need exists for encoding a rate-1/n convolutional code derived from a rate-1/2 convolutional code and its punctured versions, where n may be any integer greater than two.
Furthermore, a need exists for decoding a rate-1/n convolutional code derived from a rate-1/2 convolutional code and its punctured versions, where n may be any integer greater than two.
Furthermore, a need exists for a device, which has a fixed-rate decoder and which may be used in a digital communication system, that does not need to be specifically tailored to the generator polynomials used to generate rate-1/n convolutional code derived from a rate-1/2 convolutional code in order to properly decode symbols representing the rate-1/n convolutional code or its punctured versions.
Moreover, a need exists for a device, which has a fixed rate decoder and which may be used in a digital communication system, that does not need to be specifically tailored to the generator polynomials used to generate the convolutional code, while remaining capable of estimating the punctured versions of convolutional code having a rate-1/n, where n may be any integer greater than two.